/**
 * 抖音发布器模块 - 使用示例（主进程）
 */

const { app, BrowserWindow } = require('electron');
const path = require('path');

// 引入抖音发布器模块
const DouyinElectronPublisher = require('../lib/index');

let mainWindow;
let douyinPublisher;

// 创建主窗口
function createWindow() {
  mainWindow = new BrowserWindow({
    width: 1200,
    height: 800,
    webPreferences: {
      nodeIntegration: true,
      contextIsolation: false,
      enableRemoteModule: true
    },
    title: '抖音发布器 - 示例应用',
    show: false
  });

  // 加载示例页面
  mainWindow.loadFile(path.join(__dirname, 'index.html'));

  // 开发模式下打开开发者工具
  if (process.argv.includes('--dev')) {
    mainWindow.webContents.openDevTools();
  }

  // 窗口准备显示时
  mainWindow.once('ready-to-show', () => {
    mainWindow.show();
    console.log('✅ 示例应用启动完成');
  });

  mainWindow.on('closed', () => {
    mainWindow = null;
  });
}

// 应用准备就绪
app.whenReady().then(async () => {
  console.log('🚀 正在启动抖音发布器示例应用...');
  
  try {
    // 创建主窗口
    createWindow();
    
    // 🎯 初始化抖音发布器模块 - 只需这几行！
    console.log('📦 正在初始化抖音发布器模块...');
    
    douyinPublisher = new DouyinElectronPublisher({
      mainWindow: mainWindow,        // 传入主窗口引用
      autoInitDB: true,             // 自动初始化数据库
      autoRegisterIPC: true,        // 自动注册 IPC 处理器
      headless: false,              // 非无头模式，显示发布窗口
      dataDir: path.join(__dirname, '..', 'data') // 数据目录
    });

    // 等待模块初始化完成
    let retryCount = 0;
    const maxRetries = 50;
    
    while (!douyinPublisher.isReady() && retryCount < maxRetries) {
      await new Promise(resolve => setTimeout(resolve, 100));
      retryCount++;
    }
    
    if (douyinPublisher.isReady()) {
      console.log('✅ 抖音发布器模块初始化成功！');
      console.log('🎉 现在可以使用所有发布功能了');
    } else {
      console.error('❌ 抖音发布器模块初始化失败');
    }
    
  } catch (error) {
    console.error('❌ 初始化过程中出现错误:', error);
  }

  app.on('activate', () => {
    if (BrowserWindow.getAllWindows().length === 0) {
      createWindow();
    }
  });
});

// 所有窗口关闭时退出应用（macOS 除外）
app.on('window-all-closed', () => {
  if (process.platform !== 'darwin') {
    app.quit();
  }
});

// 应用退出前清理
app.on('before-quit', async () => {
  console.log('🧹 正在清理资源...');
  
  if (douyinPublisher) {
    try {
      await douyinPublisher.close();
      console.log('✅ 抖音发布器模块已关闭');
    } catch (error) {
      console.error('❌ 关闭模块时出现错误:', error);
    }
  }
});
